GremlinをDatadogにインテグレーションしてみた #reinvent
こんにちは。AWS事業本部のKyoです。
前回に続きまして、カオスエンジニアリングツール Gremlinを監視ツール Datadogにインテグレーションしてみました。
GremlinのDatadogインテグレーションででできること
このインテグレーションを有効にすると、ダッシュボードの上部に攻撃をオーバーレイして、Gremlinイベントが発生したタイミングと、攻撃がメトリックに与える影響を正確に特定できます。(翻訳)
また、Datadog Event Stream
内から以下も実施可能です。
- グレムリン攻撃を再実行する
- グレムリン攻撃のログを表示する
- グレムリン攻撃を停止する
※これらはSlackと同様にGremlinアプリ経由でした。
前提
- Gremlinアカウント
- Gremlinデーモンをインストール済みのEC2インスタンス(Amazon Linux2)
- 準備方法はこちらをご参照ください
- Datadogアカウント
準備
まずDatadogからAPIキーを取得します。サイドバーのIntegrationsからAPIsを選択し、遷移先でAPI Keysを選択します。 紫色のバーをマウスオーバーするとAPIキーが表示されます。
Gremlin Appに移動します。前回と同じく、Company Settingsをクリックします。
Integrationsを選択肢、Datadogの右のAddをクリックします。APIキーの入力を求められるので、先ほど取得したAPIキーを入力します。
これでインテグレーションは完了です。
注意:APIキーが間違っていてもconnectedになるようです。私の環境ではAPIキーをそのままコピーすると空白が入ってしまいました。 インテグレーションを実施してもDatadogでイベントが表示されない場合はAPIキーを再確認してみてください。
動作確認
まず、対象のEC2インスタンスにSSH接続し、以下のコマンドでDatadog agentをインストールします。
DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=<your key> bash -c "$(curl -L https://raw.githubusercontent.com/DataDog/datadog-agent/master/cmd/agent/install_script.sh)"
※APIキーは自身のものに置き換えてください。
DatadogのDashboards、Dashboard listから対象のホストを選択します。
対象のダッシュボードに遷移したら、以下の操作を実施します。
- 左上の
Search
をクリックし、表示されるテキストボックスにgremlin
と入力し、エンター(関連イベントが表示されます) - 右上のプルダウンから時間間隔を15min単位に変更(必須ではありませんが、攻撃の期間を見やすくするため)
前々回と同様にGremlinアプリにてCPU攻撃を実施してみます。
CPU usageが急激に上昇し、下降したことが確認できました。またイベントにGremlinの開始と終了が表示されました(表示されない場合はリロードを試してみてください)。
なお、薄く表示されているバー(矢印参照)をマウスオーバーすると、対応するイベントがハイライトされます。
これによって、このCPU usageの上昇がGremlinによるものであることが分かります。
おわりに
今回はGremlinをDatadogにインテグレーションしてみました。
前回のSlackインテグレーションと合わせると「通知と監視」の仕組みが出来上がるので、カオス実験を実施する土壌ができるのではないでしょうか。
また、今回は実施しませんでしたが、DatadogとのインテグレーションではアラートとWebhookを利用して、「進行中のすべての攻撃を停止させる」といったことも可能なようです。本番環境等で実施する際にこの仕組みは安心ですね。
Halting Attacks Using the Datadog Webhook
以上、何かのお役に立てれば幸いです。